//
//  UIImage+Render.h
//  Project
//
//  Created by  CarlsonLee on 2018/12/7.
//  Copyright © 2018年 YANJING. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface UIImage (Render)

/** 取消UIImage的渲染模式 */
+ (UIImage *)imageRenderingModeImageNamed:(NSString *)imageName;

/**
 创建一张纯色图片
 */
+ (UIImage *)gel_imageWithColor:(UIColor *)color size:(CGSize)size;

#pragma mark - 图片信息
/**
 获取图片上某一点的颜色
 
 @param point  图片内的一个点。范围是 [0, image.width-1],[0, image.height-1]
 超出图片范围则返回nil
 */
- (UIColor *)gel_colorAtPoint:(CGPoint)point;

/**
 该图片是否有alpha通道
 */
- (BOOL)gel_hasAlphaChannel;

#pragma mark - 修改图片
/// 从内部裁剪出一块儿。
- (UIImage *)gel_imageByCropToRect:(CGRect)rect;

/**
 为图片裁剪出圆角
 @param radius  圆角的半径(如果超出图片宽高，内部会调整以适应图片)
 */
- (UIImage *)gel_imageByRoundCornerRadius:(CGFloat)radius;

/**
 为图片裁剪出圆角
 @param radius  圆角的半径(如果超出图片宽高，内部会调整以适应图片)
 @param corners  裁剪哪几个角
 @param borderWidth  可以加一个border
 */
- (UIImage *)gel_imageByRoundCornerRadius:(CGFloat)radius
                                 corners:(UIRectCorner)corners
                             borderWidth:(CGFloat)borderWidth;

#pragma mark - 图片效果

/// 给图片染色(Tint Color) (就像用有色眼镜看图片)
- (UIImage *)gel_imageByTintColor:(UIColor *)color;

/// 黑白化
- (UIImage *)gel_imageByGrayscale;

/// 灰毛玻璃效果 (适合在里面显示任何内容)
- (UIImage *)gel_imageByBlurSoft;

/// 白色毛玻璃效果 (苹果内置)(适合在里面显示任何内容，除了纯白色文本) 和上拉控制中心、桌面文件夹效果一样
- (UIImage *)gel_imageByBlurLight;

/// 亮白色毛玻璃效果 (苹果内置)(适合在里面显示深色文字)
- (UIImage *)gel_imageByBlurExtraLight;

/// 黑色色毛玻璃效果 (苹果内置)(适合在里面显示浅色文字) 和下拉通知中心的效果一样
- (UIImage *)gel_imageByBlurDark;

/// 模糊一张图片，并添加tintColor
- (UIImage *)gel_imageByBlurWithTint:(UIColor *)tintColor;

- (UIImage *)gel_imageByBlurRadius:(CGFloat)blurRadius
                        tintColor:(UIColor *)tintColor
                         tintMode:(CGBlendMode)tintBlendMode
                       saturation:(CGFloat)saturation
                        maskImage:(UIImage *)maskImage;

/**
 * 模糊一张图片 (只模糊，不调整颜色)
 *
 * @param radius           模糊半径(力度) iOS7模糊大约是40
 */
- (UIImage *)gel_blurredImageWithRadius:(CGFloat)radius;

/**
 * 模糊一张图片
 *
 * @param radius           模糊半径(力度) iOS7模糊大约是40
 * @param iterations       模糊迭代次数 (次数越多、计算量越大、模糊越平滑，通常3就足够了)
 * @param tintColor        模糊后着色 (如果该值为nil,则不会进行着色)
 * @param tintColorPercent 着色的百分比 (0.0~1.0)
 * @param blendMode        着色的混合模式
 */
- (UIImage *)gel_blurredImageWithRadius:(CGFloat)radius
                            iterations:(NSUInteger)iterations
                             tintColor:(UIColor *)tintColor
                      tintColorPercent:(CGFloat)tintColorPercent
                             blendMode:(CGBlendMode)blendMode;

@end
